java.math প্যাকেজটি Java এর একটি শক্তিশালী এবং কার্যকরী প্যাকেজ যা অত্যন্ত সঠিক গণনা এবং অর্থনৈতিক অ্যাপ্লিকেশন এর জন্য ব্যবহার করা হয়। এই প্যাকেজে বেশ কিছু ক্লাস এবং ফিচার রয়েছে যা খুবই নির্ভুল গণনার জন্য উপকারী। এটি বিশেষ করে তখন ব্যবহৃত হয় যখন আপনি ছোট বা বড় দশমিক সংখ্যার সাথে কাজ করেন এবং উচ্চ নির্ভুলতা প্রয়োজন হয়, যেমন বড় সংখ্যার গাণিতিক অপারেশন (BigInteger, BigDecimal), বিশাল সংখ্যা, অর্থনৈতিক হিসাব বা বৈজ্ঞানিক গণনা।
এই প্যাকেজে দুটি প্রধান ক্লাস রয়েছে: BigInteger এবং BigDecimal। এদের মাধ্যমে আপনি যথাযথভাবে বড় সংখ্যা এবং দশমিকের সাথে গাণিতিক কাজ করতে পারবেন, যা পুরনো long এবং double প্রকারের থেকে অনেক বেশি সঠিক। এছাড়াও, এই প্যাকেজে আরও কিছু সহায়ক ক্লাস এবং ফিচার রয়েছে যা জটিল গাণিতিক হিসাব করতে সহায়তা করে।
Java.math প্যাকেজের প্রধান ক্লাস এবং ফিচারসমূহ:
1. BigInteger Class
BigInteger ক্লাসটি অসংখ্য বড় পূর্ণসংখ্যা (arbitrary-precision integer) ধারণ করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি সিস্টেমের প্রাকৃতিক সীমা ছাড়িয়ে বড় পূর্ণসংখ্যার সাথে গাণিতিক কাজ করতে পারেন।
BigInteger ক্লাসের প্রধান মেথড:
add(BigInteger val): দুটি বড় পূর্ণসংখ্যার যোগফল প্রদান করে।subtract(BigInteger val): দুটি বড় পূর্ণসংখ্যার বিয়োগফল প্রদান করে।multiply(BigInteger val): দুটি বড় পূর্ণসংখ্যার গুণফল প্রদান করে।divide(BigInteger val): দুটি বড় পূর্ণসংখ্যার ভাগফল প্রদান করে।mod(BigInteger val): দুটি বড় পূর্ণসংখ্যার মডুলাস প্রদান করে।compareTo(BigInteger val): দুটিBigIntegerএর তুলনা করে ফলাফল প্রদান করে।
উদাহরণ: BigInteger ব্যবহার করা
import java.math.BigInteger;
public class BigIntegerExample {
public static void main(String[] args) {
// Create BigInteger instances
BigInteger bigNumber1 = new BigInteger("123456789123456789123456789");
BigInteger bigNumber2 = new BigInteger("987654321987654321987654321");
// Add the numbers
BigInteger sum = bigNumber1.add(bigNumber2);
System.out.println("Sum: " + sum);
// Multiply the numbers
BigInteger product = bigNumber1.multiply(bigNumber2);
System.out.println("Product: " + product);
// Compare two numbers
int comparison = bigNumber1.compareTo(bigNumber2);
System.out.println("Comparison: " + (comparison < 0 ? "bigNumber1 is smaller" : "bigNumber1 is larger"));
}
}
Output:
Sum: 1111111111111111111111111110
Product: 121932631137021795226042672313508585964157684973145601
Comparison: bigNumber1 is smaller
ব্যাখ্যা:
BigIntegerক্লাসের মাধ্যমে আমরা বড় পূর্ণসংখ্যা গাণিতিক অপারেশন করতে সক্ষম।add(),multiply(), এবংcompareTo()মেথডগুলোর মাধ্যমে আমরা বড় সংখ্যার যোগফল, গুণফল এবং তুলনা করতে পারি।
2. BigDecimal Class
BigDecimal ক্লাসটি অত্যন্ত সঠিক দশমিক সংখ্যার জন্য ব্যবহৃত হয়, বিশেষ করে অর্থনৈতিক হিসাবের ক্ষেত্রে। এটি floating-point arithmetic-এর ভুল এড়িয়ে নির্ভুল দশমিক গণনা করতে সক্ষম।
BigDecimal ক্লাসের প্রধান মেথড:
add(BigDecimal val): দুটি বড় দশমিক সংখ্যার যোগফল প্রদান করে।subtract(BigDecimal val): দুটি বড় দশমিক সংখ্যার বিয়োগফল প্রদান করে।multiply(BigDecimal val): দুটি বড় দশমিক সংখ্যার গুণফল প্রদান করে।divide(BigDecimal val, int scale, RoundingMode roundingMode): দুটি বড় দশমিক সংখ্যার ভাগফল প্রদান করে, যেখানেscaleহল দশমিক স্থান এবংroundingModeহল দশমিক স্থান নির্ধারণের পদ্ধতি (যেমন, UP, DOWN, HALF_UP, ইত্যাদি)।compareTo(BigDecimal val): দুটিBigDecimalএর তুলনা করে ফলাফল প্রদান করে।
উদাহরণ: BigDecimal ব্যবহার করা
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalExample {
public static void main(String[] args) {
// Create BigDecimal instances
BigDecimal decimal1 = new BigDecimal("12345.6789");
BigDecimal decimal2 = new BigDecimal("9876.54321");
// Add the decimals
BigDecimal sum = decimal1.add(decimal2);
System.out.println("Sum: " + sum);
// Divide the decimals with rounding
BigDecimal quotient = decimal1.divide(decimal2, 2, RoundingMode.HALF_UP);
System.out.println("Quotient: " + quotient);
// Compare the two decimals
int comparison = decimal1.compareTo(decimal2);
System.out.println("Comparison: " + (comparison > 0 ? "decimal1 is larger" : "decimal2 is larger"));
}
}
Output:
Sum: 22222.22211
Quotient: 1.25
Comparison: decimal1 is larger
ব্যাখ্যা:
BigDecimalক্লাসটি সঠিক দশমিক মানের গণনার জন্য ব্যবহৃত হয়েছে। এখানেadd(),divide(), এবংcompareTo()মেথডগুলোর মাধ্যমে গণনা করা হয়েছে।divide()মেথডটিscaleএবংRoundingModeব্যবহার করে সঠিক দশমিক স্থান নির্ধারণ করে।
3. MathContext Class (BigDecimal এর জন্য)
MathContext একটি কনফিগারেশন ক্লাস যা BigDecimal এর জন্য নির্দিষ্ট গাণিতিক নির্ভুলতা এবং রাউন্ডিং পদ্ধতি কনফিগার করে। এটি বিশেষ করে বড় সংখ্যা এবং আর্থিক হিসাবের জন্য গুরুত্বপূর্ণ।
MathContext এর উদাহরণ:
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class MathContextExample {
public static void main(String[] args) {
BigDecimal value1 = new BigDecimal("123456.789123");
BigDecimal value2 = new BigDecimal("987654.321987");
// Using MathContext with 5 digits precision
MathContext mc = new MathContext(5, RoundingMode.HALF_UP);
// Perform addition with precision
BigDecimal result = value1.add(value2, mc);
System.out.println("Sum with MathContext: " + result);
}
}
Output:
Sum with MathContext: 1111111
ব্যাখ্যা:
MathContext(5, RoundingMode.HALF_UP)পাঁচটি ডিজিটের সঠিকতা এবং হাফ-আপ রাউন্ডিং পদ্ধতি ব্যবহার করেছে।
4. RoundingMode Enum
RoundingMode একটি enum ক্লাস যা decimal rounding নির্ধারণের জন্য ব্যবহৃত হয়। এটি BigDecimal এবং MathContext এর সাথে কাজ করে এবং বিভিন্ন রাউন্ডিং পদ্ধতি ব্যবহার করতে সাহায্য করে।
RoundingMode-এর কিছু পদ্ধতি:
HALF_UP: সাধারণ রাউন্ডিং পদ্ধতি, যেখানে 5 বা তার বেশি হলে পরবর্তী ডিজিটে চলে যায়।HALF_DOWN: যেখানে 5 বা তার কম থাকলে আগের ডিজিটে থাকে।DOWN: কেটে দেওয়া ডিজিটের কোনো মান গণনা করা হয় না।UP: কেটে দেওয়া ডিজিটের পরবর্তী মান গ্রহণ করা হয়।
java.math প্যাকেজটি সঠিক এবং উচ্চ নির্ভুলতার গাণিতিক হিসাব করার জন্য খুবই গুরুত্বপূর্ণ। এর মধ্যে BigInteger এবং BigDecimal ক্লাসগুলি প্রধান ফিচার যা বড় সংখ্যার এবং দশমিকের সাথে কাজ করতে সহায়ক। এই প্যাকেজটি ব্যবহার করে আপনি বড় সংখ্যা বা অর্থনৈতিক হিসাবগুলির সঠিকভাবে গাণিতিক কাজ করতে পারবেন এবং সঠিক গণনার জন্য বিভিন্ন RoundingMode এবং MathContext ব্যবহার করতে পারেন।
Read more